home *** CD-ROM | disk | FTP | other *** search
/ APDL Eductation Resources / APDL Eductation Resources.iso / programs / misc / cambridge / !Stepper / !RunImage (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1993-08-31  |  6.7 KB  |  311 lines

  1.  >!RunImage
  2.  Cambridge Instruction Set Emulator
  3.  7Seg Device Driver
  4.  Version 1.00 (25th May 1993)         Copyright 
  5.  A. M. Pereira 1993
  6. CDeviceName$="Stepper"    : 
  7.  Device name (shown on TaskManager)
  8. /appname$="!stepper"      : 
  9.  Directory name
  10.     ;dirname$="<Step$Dir>" : 
  11.  Directory variable (see !Run)
  12. =refresh = 10             : 
  13.  Refresh rate (centi-seconds)
  14. 5Author$ ="Ainsley Pereira"       : 
  15.  For info box
  16. 5Version$="1.00 (28th May 1993)"  : 
  17.  For info box
  18.  q% 256, menu 1024
  19.  "Wimp_Initialise",200,&4B534154,DeviceName$+" Driver" 
  20.  wimp_v,task_handle
  21. quit    = 
  22. make_info_box
  23. device_startup
  24. iconbar = 
  25. iconbar
  26.  "OS_ReadMonotonicTime" 
  27.  time
  28.  "Wimp_PollIdle",,q%,time + refresh 
  29.  event
  30.  event 
  31.       
  32.  0 : 
  33. device_refresh
  34.       
  35.  1 : 
  36. device_redraw
  37.  (      
  38.  2 : 
  39.  "Wimp_OpenWindow",,q%
  40. !)      
  41.  3 : 
  42.  "Wimp_CloseWindow",,q%
  43.       
  44.  6 : 
  45. mouse
  46.       
  47.  9 : 
  48. menuselect
  49.       
  50.  17,18 : 
  51. message
  52.  quit
  53. device_closedown
  54.  "Wimp_CloseDown",task_handle,&4B534154
  55. iconbar
  56. !q%   = -1
  57. q%!4  = 0
  58. q%!8  = 0
  59. q%!12 = 68
  60. q%!16 = 68
  61. q%!20 = %11000000011010
  62. $(q%+24)=appname$
  63.  "Wimp_CreateIcon",,q% 
  64.  iconbar
  65. =iconbar
  66. mouse
  67.  q%!12 
  68. 9    
  69.  -2         : 
  70. ibarclick
  71.        : 
  72. dragwin
  73. dragwin
  74. q%!4=q%!12
  75.  "Wimp_GetWindowOutline",,q%+4
  76. !q%=q%!4
  77. q%!4=1
  78.  "Wimp_DragBox",,q%
  79. make_info_box
  80.  info 400, indirect 1024
  81. ip=indirect
  82.  Visible area
  83. !info=&18C:info!4=&E6
  84. info!8=&456:info!12=&208
  85.  scroll offsets
  86. info!16=0:info!20=0
  87.  Handle to open behind
  88. info!24=-1
  89.  Window flags
  90. info!28=&84200012
  91.  Colours
  92. info!32=&01070207
  93. info!36=&00020103
  94.  Work area
  95. info!40=0:info!44=-290
  96. info!48=&2CA:info!52=0
  97.  Title icon flags
  98. info!56=&13D
  99.  Workarea 'button' flags
  100. info!60=&3000
  101.  Sprite area
  102. info!64=1
  103.  min width/height
  104. info!68=1
  105.  title data
  106. info!72=ip
  107. b%$ip="About this Device Driver"+
  108. c'ip+=
  109. ("About this Device Driver")+1
  110. d+info!80=
  111. ("About this Device Driver")+1
  112. info!76=ip:Null=ip
  113. g    ip+=1
  114.  Number of icons
  115. info!84=7
  116.  Icons
  117. icp=info+88
  118.  Icon 0, engraved border
  119. !icp=8:icp!4=-286
  120. icp!8=&2C4:icp!12=-42
  121. icp!16=&1700313D
  122. icp!20=Null
  123. $ip="r4"+
  124. icp!24=ip
  125. ip+=3:icp!28=1
  126. icp+=32
  127.  Icon 1, indented header
  128. !icp=&26:icp!4=-78
  129. icp!8=&17C:icp!12=-14
  130. icp!16=&1700313D
  131. icp!20=ip
  132. z $ip=DeviceName$+" Driver"+
  133. {"ip+=
  134. (DeviceName$+" Driver")+1
  135. |%icp!28=
  136. (DeviceName$+" Driver")+1
  137. $ip="r2"+
  138. 0:indented=ip
  139. icp!24=indented
  140.     ip+=3
  141. icp+=32
  142.  Icon 2, indented message
  143. !icp=&22:icp!4=-142
  144. icp!8=&2AA:icp!12=-90
  145. icp!16=&1700311D
  146. icp!20=ip
  147. 2$ip="Device Driver for use with !Cambridge"+
  148. 4ip+=
  149. ("Device Driver for use with !Cambridge")+1
  150. icp!24=indented
  151. 7icp!28=
  152. ("Device Driver for use with !Cambridge")+1
  153. icp+=32
  154.  Icon 3, Author:
  155. !icp=&28:icp!4=-194
  156. icp!8=&A8:icp!12=-162
  157. icp!16=&17003001
  158. $(icp+20)="Author :"+
  159. icp+=32
  160.  Icon 4, Version:
  161. !icp=&28:icp!4=-258
  162. icp!8=&A8:icp!12=-226
  163. icp!16=&17003001
  164. $(icp+20)="Version:"+
  165. icp+=32
  166.  Icon 5, Author field
  167. !icp=&C6:icp!4=-206
  168. icp!8=&2A8:icp!12=-152
  169. icp!16=&1700313D
  170. icp!20=ip:$ip=Author$+
  171. (Author$)+1
  172. icp!24=indented
  173. icp!28=
  174. (Author$)+1
  175. icp+=32
  176.  Icon 6, Version field
  177. !icp=&C6:icp!4=-270
  178. icp!8=&2A8:icp!12=-216
  179. icp!16=&1700313D
  180. icp!20=ip:$ip=Version$+
  181. (Version$)+1
  182. icp!24=indented
  183. icp!28=
  184. (Version$)+1
  185.  "Wimp_CreateWindow",,info 
  186.  infohandle
  187. ibarclick
  188.  (q%!8 
  189.  %010)=%010 
  190. menu(q%!0-64,96+(2*44))
  191. menuheader(pointer,width,title$)
  192. menupointer=pointer
  193. $menupointer=title$+
  194. menupointer?12=7
  195. menupointer?13=2
  196. menupointer?14=7
  197. menupointer?15=0
  198. menupointer!16=width
  199. menupointer!20=44
  200. menupointer!24=0
  201. menupointer+=28
  202. menuitem(subm,flags,tflags,text$)
  203. menupointer!0=flags
  204. menupointer!4=subm
  205. menupointer!8=tflags
  206. $(menupointer+12)=text$+
  207. menupointer+=24
  208. menu(x,y)
  209. menuheader(menu, 192, DeviceName$)
  210. menuitem(infohandle, 0, &7000031, "Info")
  211. menuitem(-1, 1<<7, &7000031, "Quit")
  212.  "Wimp_CreateMenu",,menu,x,y
  213. menuselect
  214.  !q% 
  215.  info
  216.  1: quit=
  217.  "Wimp_GetPointerInfo",,q%
  218.  (q%!8 
  219.  %001)=%001 
  220. menu(x,y)
  221. message
  222.  q%!16 
  223.  0: quit=
  224. e(erl,err)
  225. q%!0=err
  226. 2$(q%+4)=
  227. $+" (internal error code "+
  228. (erl)+")"
  229.  "Wimp_ReportError",q%,%011,DeviceName$+" Driver" 
  230.  ,fatal
  231.  fatal=2 
  232. reporterror(errnum,errmess$,errflags)
  233. q%!0=errnum
  234. $(q%+4)=errmess$
  235.  "Wimp_ReportError",misc,errflags,DeviceName$+" Driver"
  236. selecticon(w, i, select)
  237.     !q%=w
  238. q%!4=i
  239.  select 
  240.   q%!8=1<<21:q%!12=1<<21
  241.   q%!8=0:q%!12=1<<21
  242.  "Wimp_SetIconState",,q%
  243.  Device specific stuff
  244.  Device does not provide input to Emulator
  245. device_startup
  246.  Device_window 4096
  247.  "Wimp_OpenTemplate",,dirname$+".Templates"
  248.  "Wimp_LoadTemplate",,Device_window+4,Device_window+2048,Device_window+4096,-1,"stepper",0
  249.  "Wimp_CreateWindow",,Device_window+4 
  250.  !Device_window
  251.  "Wimp_CloseTemplate"
  252. Device_OldOutput = 0
  253.  "Cambridge_ReadIOState" 
  254.  ,Device_Output
  255. Device_Step     = 0
  256. )Device_StepRate = 7.5 :
  257.  Degrees/step
  258. device_refresh
  259.  "Wimp_GetWindowState",,Device_window
  260.  "Wimp_OpenWindow",,Device_window
  261. device_closedown
  262. device_refresh
  263.  "Cambridge_ReadIOState" 
  264.  b<>Device_OldOutput 
  265. device_updatewindow(b,Device_OldOutput)
  266. Device_OldOutput = b
  267. device_updatewindow(b, Device_OldOutput)
  268.  Device_OldOutput 
  269.  &09 : 
  270.  b=&0A 
  271.  Device_Step+=Device_StepRate
  272. 7             
  273.  b=&06 
  274.  Device_Step-=Device_StepRate
  275.  &0A : 
  276.  b=&05 
  277.  Device_Step+=Device_StepRate
  278. 7             
  279.  b=&09 
  280.  Device_Step-=Device_StepRate
  281.  &05 : 
  282.  b=&06 
  283.  Device_Step+=Device_StepRate
  284. 7             
  285.  b=&0A 
  286.  Device_Step-=Device_StepRate
  287.  &06 : 
  288.  b=&09 
  289.  Device_Step+=Device_StepRate
  290. 7             
  291.  b=&05 
  292.  Device_Step-=Device_StepRate
  293.  "Wimp_ForceRedraw",!Device_window,0,-266,344,0
  294. device_redraw
  295.  !q%=!Device_window 
  296.  "Wimp_RedrawWindow",,q% 
  297.  more
  298.  more
  299.  "Wimp_SetColour",13
  300. ('    
  301.  (q%!4+172), (q%!16-133), 100
  302.  q%!4+172, q%!16-133
  303.  "Wimp_SetColour",10
  304. +=    
  305.  BY (
  306. (Device_Step))*100), (
  307. (Device_Step))*100)
  308. ,)    
  309.  "Wimp_GetRectangle",,q% 
  310.  more
  311.